Conversation
📝 WalkthroughWalkthroughThis pull request introduces a configurable auto-pull feature for container images with a three-tier precedence system: CLI flag overrides per-agent configuration, which overrides global configuration. The global default changes from False to True, and documentation is updated to explain the new behavior and clarify detached container workflows. Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches
🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (2)
docs/quickstart.md (1)
78-99:⚠️ Potential issue | 🟡 MinorUpdate the earlier startup bullets to match the new default.
This page still says the image is pulled only “if not already present,” but
src/vibepod/core/config.pyLine 32 now defaultsauto_pulltoTrue. As written, the quickstart describes two different pull policies on the same page.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@docs/quickstart.md` around lines 78 - 99, The quickstart's earlier startup bullets contradict the new default pull policy; update the startup text so it states the container image is pulled by default (because src/vibepod/core/config.py sets auto_pull = True) instead of saying "only if not already present." Locate the startup bullets in docs/quickstart.md and change the wording to reflect the new default auto-pull behavior (or mention how to opt out) and ensure any examples or notes about pulling are consistent with the auto_pull configuration and its variable name.docs/configuration.md (1)
37-42:⚠️ Potential issue | 🟡 MinorKeep the “Full reference” agent blocks consistent.
This snippet now shows
auto_pullonly forclaude, butsrc/vibepod/core/config.pyLines 37-93 addsauto_pull: Nonefor every built-in agent. In a section labeled “Full reference,” that makes the copied defaults misleading forgemini,opencode, and the rest. Either add the field to each agent block or call out that the remaining blocks are abbreviated.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@docs/configuration.md` around lines 37 - 42, The "Full reference" agent examples are inconsistent: only the claude block shows auto_pull while the actual defaults include auto_pull for every built-in agent (e.g., gemini, opencode); update the docs by either adding the auto_pull: null line to every agent block in the full-reference agents section (keeping env, image, enabled fields matching the canonical defaults) or explicitly mark the other agent blocks as abbreviated and note that auto_pull defaults to null for all built-ins; reference the agents keys (claude, gemini, opencode, etc.) and the auto_pull field when making the change.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@docs/agents/index.md`:
- Around line 170-209: The docs describe a pre-start detached workflow but the
code in run.py calls manager.run_agent(...) before the detach early return, so
-d only detaches the terminal while the agent is already started; either update
the docs to remove the “customise then start manually” steps or change run.py to
implement a true “start-without-launching-agent” mode (e.g., add a --start flag
or move the manager.run_agent(...) call to after the detach check and only
invoke it when not in a pre-start state). Locate manager.run_agent in
src/vibepod/commands/run.py and either (A) revise the docs to state that -d only
detaches the terminal and that the agent is already running, or (B) implement
the flag/flow change so -d leaves the container running without starting the
agent, and ensure the CLI flag name and behavior are documented accordingly.
---
Outside diff comments:
In `@docs/configuration.md`:
- Around line 37-42: The "Full reference" agent examples are inconsistent: only
the claude block shows auto_pull while the actual defaults include auto_pull for
every built-in agent (e.g., gemini, opencode); update the docs by either adding
the auto_pull: null line to every agent block in the full-reference agents
section (keeping env, image, enabled fields matching the canonical defaults) or
explicitly mark the other agent blocks as abbreviated and note that auto_pull
defaults to null for all built-ins; reference the agents keys (claude, gemini,
opencode, etc.) and the auto_pull field when making the change.
In `@docs/quickstart.md`:
- Around line 78-99: The quickstart's earlier startup bullets contradict the new
default pull policy; update the startup text so it states the container image is
pulled by default (because src/vibepod/core/config.py sets auto_pull = True)
instead of saying "only if not already present." Locate the startup bullets in
docs/quickstart.md and change the wording to reflect the new default auto-pull
behavior (or mention how to opt out) and ensure any examples or notes about
pulling are consistent with the auto_pull configuration and its variable name.
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: a8f4b83a-4507-4564-8480-2636d9d61472
📒 Files selected for processing (7)
docs/agents/index.mddocs/configuration.mddocs/quickstart.mdsrc/vibepod/commands/run.pysrc/vibepod/core/config.pytests/test_config.pytests/test_run.py
|
Implements #30 |
There was a problem hiding this comment.
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
docs/configuration.md (1)
37-42:⚠️ Potential issue | 🟡 MinorDocument
auto_pullconsistently across agent blocks.This is in the “Full reference”, but only
agents.claude.auto_pullis shown even thoughsrc/vibepod/core/config.pyaddsauto_pull: Nonefor every built-in agent. Someone copying thegemini/opencodeblocks from this page will miss a supported override. Either addauto_pull: nullto each agent section or note that the omitted agents support the same key.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@docs/configuration.md` around lines 37 - 42, Add the missing auto_pull documentation for all built-in agents: either add the line `auto_pull: null` to each agent block (e.g., under `agents.gemini`, `agents.opencode`, etc.) in the “Full reference” so every agent lists the per-agent override, or add a single note stating that all agents support the `agents.<agent>.auto_pull` key (default null) as implemented in the config initializer (see auto_pull handling in src/vibepod/core/config.py). Ensure the chosen approach is applied consistently across every agent section in the configuration reference.
🧹 Nitpick comments (1)
tests/test_run.py (1)
300-315: Keep the test fixture aligned with the new config shape.
_make_config()still models the old baseline: it defaultsglobal_auto_pulltoFalseand dropsagents.claude.auto_pullwhen the value isNone. That means the fallback test is only covering the missing-key case, not the explicitnullstate introduced insrc/vibepod/core/config.py. Aligning the fixture with production defaults will make these tests less brittle.Proposed tweak
def _make_config( - global_auto_pull: bool = False, + global_auto_pull: bool = True, agent_auto_pull: bool | None = None, ) -> dict: - agent_cfg: dict = {"env": {}, "init": []} - if agent_auto_pull is not None: - agent_cfg["auto_pull"] = agent_auto_pull + agent_cfg: dict = {"env": {}, "init": [], "auto_pull": agent_auto_pull} return { "default_agent": "claude", "auto_pull": global_auto_pull, "auto_remove": True,🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@tests/test_run.py` around lines 300 - 315, The fixture _make_config is out of sync with production defaults: change the default global_auto_pull to True and ensure agents.claude.auto_pull is present even when agent_auto_pull is None (do not drop the key); update the agent_cfg construction to always set agent_cfg["auto_pull"] = agent_auto_pull so tests cover the explicit null state introduced in src/vibepod/core/config.py while keeping the existing parameters.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Outside diff comments:
In `@docs/configuration.md`:
- Around line 37-42: Add the missing auto_pull documentation for all built-in
agents: either add the line `auto_pull: null` to each agent block (e.g., under
`agents.gemini`, `agents.opencode`, etc.) in the “Full reference” so every agent
lists the per-agent override, or add a single note stating that all agents
support the `agents.<agent>.auto_pull` key (default null) as implemented in the
config initializer (see auto_pull handling in src/vibepod/core/config.py).
Ensure the chosen approach is applied consistently across every agent section in
the configuration reference.
---
Nitpick comments:
In `@tests/test_run.py`:
- Around line 300-315: The fixture _make_config is out of sync with production
defaults: change the default global_auto_pull to True and ensure
agents.claude.auto_pull is present even when agent_auto_pull is None (do not
drop the key); update the agent_cfg construction to always set
agent_cfg["auto_pull"] = agent_auto_pull so tests cover the explicit null state
introduced in src/vibepod/core/config.py while keeping the existing parameters.
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: e5cbeaf1-6e7a-401a-ae04-4d58d252b1cc
📒 Files selected for processing (6)
docs/agents/index.mddocs/configuration.mdsrc/vibepod/commands/run.pysrc/vibepod/core/config.pytests/test_config.pytests/test_run.py
🚧 Files skipped from review as they are similar to previous changes (2)
- tests/test_config.py
- src/vibepod/commands/run.py
This pull request introduces a new auto-pull feature for agent containers in VibePod, allowing users to control whether the latest Docker image is pulled before each run. The feature supports global, per-agent, and CLI flag overrides, and is fully documented and tested.
Summary by CodeRabbit
Release Notes
New Features
Documentation